package com.mahjong.server.component.logic.util;

import java.util.LinkedList;
import java.util.List;


/**
 * 数组工具类
 * @user:   Administrator
 * @author： 游刚
 * @version：1.0
 * @created：Apr 13, 2013
 */

public class ArrayUtil {

	/**
	 * 合并数据targe元素按顺序添加在source之后
	 * @param source
	 * @param target
	 * @return
	 */
	public static String[] mergeArray(String[] source,String[] target) {
		String[] obj = new String[source.length+target.length];
		for (int i = 0; i < source.length; i++) {
			obj[i] = source[i];
		}
		for (int j = 0; j < target.length; j++) {
			obj[j+source.length] = target[j];
		}
		return obj;
	}

 	/**
 	 * 根据坐标，移除指定的元素
 	 * @param data
 	 * @param index
 	 */
 	public static String[] removeElement(String[] data ,int index) {
 		List<String> tmp = new LinkedList<String>();
 		for(int i = 0;i<data.length;i++) {
 			if (i!=(index-1)) {
 				tmp.add(data[i]);
 			}
 		}
 		data = new String[tmp.size()];
 		for (int i = 0; i < tmp.size(); i++) {
 			data[i] = tmp.get(i);
 		}
 		return data;
 	}
 	
 	/**
 	 * 移除数组中元素
 	 * @param data
 	 * @param str
 	 */
 	public static String[] removeElement(String[] data ,String ...str) {
 		List<String> list = new LinkedList<String>();
 		for(String d : data) {
			list.add(d);
 		}
 		List<String> sList = new LinkedList<String>();
 		for(String s : str) {
			sList.add(s);
 		}
 		list.removeAll(sList);
 		data = new String[list.size()];
 		for (int i = 0; i < list.size(); i++) {
			data[i] = list.get(i);
		}
 		return data;
 	}
 	
 	
 	/**
 	 * 从数组中获取一个指定的元素
 	 * @param data
 	 * @param index
 	 */
 	public static String getElement(String[] data ,int index) {
 		for(int i = 0;i<data.length;i++) {
 			if (i==(index-1)) {
 				return data[i];
 			}
 		}
 		return null;
 	}
 	
 	/**
 	 * 判断某个元素是否在数组中存在
 	 * @param str
 	 * @param arr
 	 * @return 存在返回true，否则返回false
 	 */
 	public static boolean isExist(String str,String[] arr) {
 		for(String a : arr) {
 			if (str.equals(a)) {
				return true;
			}
 		}
 		return false;
 	}                 

}
